/* Includes ------------------------------------------------------------------*/
#include <main.h>

/* Private define-------------------------------------------------------------*/

/* Private variables----------------------------------------------------------*/
static void Delay_ms(uint16_t ms);
static void Memory_Clr(uint8_t *,uint16_t );
static void Error_Handler(void);
static void Sys_Soft_Reset(void);
/* Public variables-----------------------------------------------------------*/
Public_t Public = 
{
    Delay_ms,
    Memory_Clr,
    Error_Handler,
    Sys_Soft_Reset
};
/* Private function prototypes------------------------------------------------*/

/*
* @name   Delay_ms
* @brief  毫秒级延时函数
* @param  ms -> 要延时的时间
* @retval None   
*/
static void Delay_ms(uint16_t ms)
{
    unsigned char i, j;
    while(ms--)
    {
        _nop_();
        _nop_();
        _nop_();
        i = 11;
        j = 190;
        do
        {
            while (--j);
        } while (--i);
    }
}

/*
* @name   Memory_Clr
* @brief  内存清除函数
* @param  pucBuffer -> 要清除的内存首地址
* @param  LEN -> 要清除内存长度
* @retval None   
*/
static void Memory_Clr(uint8_t *pucBuffer,uint16_t LEN)
{
    uint16_t i;
    for(i=0;i<LEN;i++)
    {
        *(pucBuffer+i) = (uint8_t)0;
    }
}

/*
* @name   Error_Handler
* @brief  错误处理函数（可以写其他处理方法，比如重启单片机）
* @param  None
* @retval None   
*/
static void Error_Handler()
{
    while(1)
    {
        Public.Delay_ms(100);
        PWM.PWM_Duty_Set(Duty_0);
        Public.Delay_ms(100);
        PWM.PWM_Duty_Set(Duty_100);
    }
}

/*
* @name   Sys_Soft_Reset
* @brief  系统软件复位
* @param  None
* @retval None   
*/
static void Sys_Soft_Reset()
{
    #ifdef Monitor_Run_Code
        printf("System soft reset!\r\n\r\n");
    #endif
    IAP_CONTR |= 0x20;  //0010 0000  SWRST: 0:不操作;1:软件控制产生复位，单片机自动复位
}
/********************************************************
  End Of File
********************************************************/